package main

import "fmt"

// goroutine运行在相同的地址空间，因此访问共享内存必须做好同步。
// 那么goroutine之间如何进行数据的通信呢，Go提供了一个很好的通信机制channel。channel可以与Unix shell 中的双向管道做类比：
// 可以通过它发送或者接收值。这些值只能是特定的类型：channel类型。定义一个channel时，也需要定义发送到channel的值的类型。注意，必须使用make 创建channel：
func main() {
	c:=make(chan string)
	go channel(c)
	str :=<-c //从c中接收数据
	fmt.Println(str)
}

func channel(c chan string) {
	c<-"hello channel"//发送hello channel到channel
}